//class RecentCounter {
//public:
//    queue<int> q;
//    RecentCounter() {
//
//    }
//
//    int ping(int t) {
//        q.push(t);
//        int tmp = q.front();
//        while (tmp < t - 3000)
//        {
//            q.pop();
//            tmp = q.front();
//        }
//        return q.size();
//    }
//};

//class Solution {
//public:
//    int dx[4] = { -1, 1, 0, 0 };
//    int dy[4] = { 0, 0, -1, 1 };
//    bool vis[300][300] = { false };
//    int numIslands(vector<vector<char>>& grid) {
//        int ret = 0;
//        for (int i = 0; i < grid.size(); i++)
//        {
//            for (int j = 0; j < grid[0].size(); j++)
//            {
//                if (grid[i][j] == '1' && vis[i][j] == false)
//                {
//                    vis[i][j] = true;
//                    ret++;
//                    dfs(grid, i, j);
//                }
//            }
//        }
//        return ret;
//    }
//    void dfs(vector<vector<char>>& grid, int a, int b)
//    {
//        for (int i = 0; i < 4; i++)
//        {
//            int x = dx[i] + a;
//            int y = dy[i] + b;
//            if (x >= 0 && x < grid.size() && y >= 0 && y < grid[0].size()
//                && grid[x][y] == '1' && vis[x][y] == false)
//            {
//                vis[x][y] = true;
//                dfs(grid, x, y);
//            }
//        }
//    }
//};

